容器化技術,我認為已經算是必備的知識,所以這邊也稍微簡單介紹一下。
可能有人會想問,如果像是這次簡單的專案也需要使用嗎?我的回答會是不用,但是換成如網頁應用程式較大型專案時,或者當需要導 入CI/CD 時,也許就有機會使用到。
因此,我認為也不要侷限於專案的大小而不去接觸,而是趁這個機會可以練習及實作,對自身技能的提升會有幫助。
Docker 是一個開源的平台,用於開發、部署和執行應用程式的容器化技術。容器化是一種虛擬化方法,它允許在容器中封裝應用程式及其相依性,以確保應用程式在不同環境中一致運行,無論是在開發、測試還是正式環境。
通常會撰寫成 Dockerfile,將如何建立的過程以檔案方式紀錄,好處是可以做好版本控制,因此建議都以此方式進行。
# Build the application from source
FROM golang:1.19 AS build-stage
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY *.go ./
RUN CGO_ENABLED=0 GOOS=linux go build -o /main
# Run the tests in the container
FROM build-stage AS run-test-stage
RUN go test -v ./...
# Deploy the application binary into a lean image
FROM gcr.io/distroless/base-debian11 AS build-release-stage
WORKDIR /
COPY --from=build-stage /main
# EXPOSE 8080
USER nonroot:nonroot
ENTRYPOINT ["/main"]